package com.Reporte_Venta;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.concurrent.ExecutionException;

import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.BarChart.Type;
import org.achartengine.model.SeriesSelection;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.Generales.R;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.BD.BD_SQLite;
import com.ClasesGraficas.VentasN1;
import com.ClasesGraficas.VentasN2;
import com.ClasesGraficas.VentasN2v2;
import com.Generales.login;
import com.JSON.JSONParser_Final;
import com.Reporte_Evolutivo.RE_1_Tipo_Eventos;


public class Venta_TipoEvento extends Activity {
	
	
	/*** TERCER NIVEL ***/
	private Intent intTipoEventoN3 = null; //Se inicializar en la funcion inicializaFlag
	private String periodo;
	
	/*** INTENTS NIVELES ***/
	private Intent intVentasGenerales = null; //Se inicializar en la funcion inicializaFlag
	private Intent intPromotor = null; //Se inicializar en la funcion inicializaFlag
	private Intent intEdad = null; //Se inicializar en la funcion inicializaFlag
	private Intent intCanal = null; //Se inicializar en la funcion inicializaFlag
	private Intent intGenero = null; //Se inicializar en la funcion inicializaFlag
	private Intent intDistrito = null; //Se inicializar en la funcion inicializaFlag
	private AlertDialog.Builder tipoNivel = null; //Se inicializa al seleccionar la grafica para generar el otro nivel
	
	/*** CONSTANTES DE ACTIVITY *****/
	private static final int TIPOEVENTO_N2 = 1;
	private static final int TIPOEVENTO_N3 = 2;
	private static final int VENTAS_GENERALES = 3;
	private static final int PROMOTOR = 4;
	private static final int EDAD = 5;
	private static final int CANAL = 6;
	private static final int GENERO = 7;
	private static final int DISTRITO = 8;
	
	/*** FALGS o PARAMETROS ***/
	public int flagTiempo = 0; // 1=mes && 2=trimenstre && 3=anno
	public int flagLima = 0;
	public int flagProvincia = 0;
	public int flagNivel=0; 
	public int flagGenerarReporte = 0;
	
	private Button pickDateInicio;
    private int anhoInicio;
    private int mesInicio;
    private int diaInicio;
    
    private Button pickDateFin;
    private int anhoFin;
    private int mesFin;
    private int diaFin;
    
    private TextView fechaInicio;
    private TextView fechaFin;
    private View view;
    
    static final int DATE_DIALOG_Inicial = 0;
    static final int DATE_DIALOG_Final = 1;
    
    private String idUsuario;
    private String nombreUser;
    private int idperfil;
    
    
    
    /*** INFORMACION PORPIA DE TIPO EVENTO ***/
    
    public String query="";
    public List<double[]> tipoEventos = new ArrayList<double[]>();
    public String[] titulos;
    public ArrayList<String> auxtitulos = new ArrayList<String>() ;
    public ArrayList<Venta> arJSON = new ArrayList<Venta>();
    public ArrayList<Venta> arX= new ArrayList<Venta>();
    List<Venta> regVenta = null;
    List<String> titulosX = null;
    List<double[]> ventas = null;
    public String nomTipoEvento;
    private int idtipoevento;

	/*** JSON ***/
	private static String urlVentasAnuales = "http://200.16.7.112:3000/reports_management/report/ventasTipoEventoAnuales";
	private static String urlVentasMensuales = "http://200.16.7.112:3000/reports_management/report/ventasTipoEventoMensuales";
	private static String urlVentasTrimestrales = "http://200.16.7.112:3000/reports_management/report/ventasTipoEventoTrimestrales";
	private JSONArray auxJson = null;
	
	/*** GRAFICA ***/
	GraphicalView mChartView = null;	
	String tituloGrafica = "";
	LinearLayout layoutGrafica = null;
	

    /******************************************/
    
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.ventas);
		
		this.inicializaFlagTipoEvento();
		
		nombreUser = this.getIntent().getExtras().getString("nombreUser");
		nombreUser = this.getIntent().getExtras().getString("nombreUser");
		idUsuario = this.getIntent().getExtras().getString("idUsuario");
		idperfil = this.getIntent().getExtras().getInt("idperfil");
		
		/*** ACTION BAR ***/
		Resources res = getResources();
		Drawable myImage = res.getDrawable(R.drawable.background2);		
		ActionBar actionBar = this.getActionBar();
		actionBar.setBackgroundDrawable(myImage);
		actionBar.setDisplayUseLogoEnabled(true);
		actionBar.setDisplayShowTitleEnabled(true);
		actionBar.setTitle(nombreUser);
		
		/*** DISENO DE LA PANTALLA ***/
		
		setColorTiempo();
		setColorUbicacion();
		
		this.incializaFecha();
		
		GenerarReporte(view);
	}
	
	public void GenerarReporte(View view)
	{
		int numeroInicial = anhoInicio*10000+mesInicio*100+diaInicio;
		int numeroFinal = anhoFin*10000+mesFin*100+diaFin;
		
		if (( ( flagProvincia == 0 && flagLima==0) || flagTiempo == 0)== false) 
		{
			if(numeroFinal>=numeroInicial)
			{
					if (flagNivel==0)
					{
						this.inicializaFlags(VENTAS_GENERALES);
						Toast.makeText(this, "Se genera el reporte por Ventas Generales	", Toast.LENGTH_LONG).show();
					    startActivity(intVentasGenerales);
					}
					if (flagNivel==1)
					{
						this.inicializaFlags(PROMOTOR);
						Toast.makeText(this, "Se genera el reporte por Tipo de Evento", Toast.LENGTH_LONG).show();
						startActivity(intPromotor);
					}
					if (flagNivel==2)
					{

						String ubicacion = "";
						if (flagLima == 1 && flagProvincia != 1){
							ubicacion = "lima";
							
						}
							
						if (flagLima != 1 && flagProvincia == 1){
							ubicacion = "provincias";
							
						}

						VentasN2v2 ventasTipoEvento = new VentasN2v2();
						
						//Venta_TipoEvento.this.GeneraEntradaGrafica();
						
						if (flagTiempo==3)Venta_TipoEvento.this.GenerarAnho(ubicacion,ventasTipoEvento);
						if (flagTiempo==1)Venta_TipoEvento.this.GenerarMes(ubicacion,ventasTipoEvento);
						if (flagTiempo==2)Venta_TipoEvento.this.GenerarTrimestre(ubicacion,ventasTipoEvento);
						
					}
					if (flagNivel==3)
					{
						this.inicializaFlags(EDAD);
						Toast.makeText(this, "Se genera el reporte por Edad", Toast.LENGTH_LONG).show();
					    startActivity(intEdad);
					}
					if (flagNivel==4)
					{
						this.inicializaFlags(CANAL);
						Toast.makeText(this, "Se genera el reporte por Canal", Toast.LENGTH_LONG).show();
					    startActivity(intCanal);
					}
					if (flagNivel==5)
					{
						this.inicializaFlags(GENERO);
						Toast.makeText(this, "Se genera el reporte por Genero", Toast.LENGTH_LONG).show();
					    startActivity(intGenero);
					}
					if (flagNivel==6)
					{
						this.inicializaFlags(DISTRITO);
						Toast.makeText(this, "Se genera el reporte por Distrito", Toast.LENGTH_LONG).show();
					    startActivity(intDistrito);
					}
				}
			}
			else
				Toast.makeText(this, "La Fecha Final no puede ser menor a la Fecha Inicial", Toast.LENGTH_LONG).show();
	 }
	
	/*** COLOR TIEMPO ***/
	public void establecerColorTiempo(View view)
	{
		Button buttonMensuales = (Button) findViewById(R.id.buttonMensuales);
		Button buttonAnuales = (Button) findViewById(R.id.buttonAnuales);
		Button buttonTrimestrales = (Button) findViewById(R.id.buttonTrimestrales);
		
		if (buttonMensuales.isPressed()) flagTiempo=1;
		else if (buttonAnuales.isPressed()) flagTiempo=3;
		else if (buttonTrimestrales.isPressed()) flagTiempo=2;
		setColorTiempo();
	}

	public void setColorTiempo(){
		
		Button buttonMensuales = (Button) findViewById(R.id.buttonMensuales);
		Button buttonAnuales = (Button) findViewById(R.id.buttonAnuales);
		Button buttonTrimestrales = (Button) findViewById(R.id.buttonTrimestrales);
	
		if (flagTiempo==1){
			
			Drawable d1 = buttonMensuales.getBackground();
            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
            d1.setColorFilter(filter);
			
			
			Drawable d2 = buttonAnuales.getBackground();
            findViewById(R.id.buttonAnuales).invalidateDrawable(d2);
            d2.clearColorFilter();
			
            Drawable d3 = buttonTrimestrales.getBackground();
            findViewById(R.id.buttonTrimestrales).invalidateDrawable(d3);
            d3.clearColorFilter();
			
		}
		if (flagTiempo==3){
			Drawable d1 = buttonAnuales.getBackground();
            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
            d1.setColorFilter(filter);

			
			Drawable d2 = buttonMensuales.getBackground();
            findViewById(R.id.buttonMensuales).invalidateDrawable(d2);
            d2.clearColorFilter();
			
            Drawable d3 = buttonTrimestrales.getBackground();
            findViewById(R.id.buttonTrimestrales).invalidateDrawable(d3);
            d3.clearColorFilter();

		
		}
		if (flagTiempo==2) {
			Drawable d1 = buttonTrimestrales.getBackground();
            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
            d1.setColorFilter(filter);

			
			Drawable d2 = buttonMensuales.getBackground();
            findViewById(R.id.buttonMensuales).invalidateDrawable(d2);
            d2.clearColorFilter();
			
            Drawable d3 = buttonAnuales.getBackground();
            findViewById(R.id.buttonAnuales).invalidateDrawable(d3);
            d3.clearColorFilter();
			
		}
	}
	
	/*** COLOR UBICACION ***/
	public void establecerColorUbicacion(View view){


		Button buttonLima = (Button) findViewById(R.id.buttonLima);
		Button buttonProvincia = (Button) findViewById(R.id.buttonProvincia);

        
        if (buttonLima.isPressed()){
        	if (flagLima == 0)  flagLima=1; else flagLima=0;
		}
		if (buttonProvincia.isPressed()){
			
			if(flagProvincia==0) flagProvincia=1; else flagProvincia=0;
		}
		
		setColorUbicacion();
        
	}

	public void setColorUbicacion(){
		

		Button buttonLima = (Button) findViewById(R.id.buttonLima);
		Button buttonProvincia = (Button) findViewById(R.id.buttonProvincia);
		
		
        if (flagLima == 1) {
        		
        	Drawable d1 = buttonLima.getBackground();
            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
            d1.setColorFilter(filter);

    	}
    	else{

    		Drawable d2 = buttonLima.getBackground();
            findViewById(R.id.buttonLima).invalidateDrawable(d2);
            d2.clearColorFilter();
    	}

		if(flagProvincia==1){

			
			Drawable d1 = buttonProvincia.getBackground();
            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
            d1.setColorFilter(filter);

			
		}
		else{

            
			Drawable d2 = buttonProvincia.getBackground();
            findViewById(R.id.buttonProvincia).invalidateDrawable(d2);
            d2.clearColorFilter();
            
		}
	}
	
	/*** COLOR DE LOS NIVELES **/
	public void setColorNivel()
	{
		Button buttonCanal = (Button) findViewById(R.id.buttonCanal);
		Button buttonGenero = (Button) findViewById(R.id.buttonGenero);
		Button buttonPromotor = (Button) findViewById(R.id.buttonPromotor);
		Button buttonEdad = (Button) findViewById(R.id.buttonEdad);
		Button buttonTipoEvento = (Button) findViewById(R.id.buttonTipoEvento);
		Button buttonDistrito = (Button) findViewById(R.id.buttonDistrito);
	
		if (flagNivel == 1)
		{
			Drawable d1 = buttonPromotor.getBackground();
            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
            d1.setColorFilter(filter);
    	}else
		{
			Drawable d1 = buttonPromotor.getBackground();
            findViewById(R.id.buttonPromotor).invalidateDrawable(d1);
            d1.clearColorFilter();
		}
		
		if (flagNivel == 2)
		{
			Drawable d1 = buttonTipoEvento.getBackground();
            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
            d1.setColorFilter(filter);
        }else
        {
        	Drawable d1 = buttonTipoEvento.getBackground();
            findViewById(R.id.buttonTipoEvento).invalidateDrawable(d1);
            d1.clearColorFilter();
		}
		
		if (flagNivel == 3)
		{
			Drawable d1 = buttonEdad.getBackground();
            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
            d1.setColorFilter(filter);
    	}else
    	{
    		Drawable d1 = buttonEdad.getBackground();
            findViewById(R.id.buttonEdad).invalidateDrawable(d1);
            d1.clearColorFilter();
        }
		
		if (flagNivel == 4)
		{
			Drawable d1 = buttonCanal.getBackground();
            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
            d1.setColorFilter(filter);
        }else
        {
        	Drawable d1 = buttonCanal.getBackground();
            findViewById(R.id.buttonCanal).invalidateDrawable(d1);
            d1.clearColorFilter();
        }

		if (flagNivel == 5)
		{
			Drawable d1 = buttonGenero.getBackground();
            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
            d1.setColorFilter(filter);
        }else
        {
        	Drawable d1 = buttonGenero.getBackground();
            findViewById(R.id.buttonGenero).invalidateDrawable(d1);
            d1.clearColorFilter();
        }

		if (flagNivel == 6)
		{
			Drawable d1 = buttonDistrito.getBackground();
            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
            d1.setColorFilter(filter);
        }else
        {
        	Drawable d1 = buttonDistrito.getBackground();
            findViewById(R.id.buttonDistrito).invalidateDrawable(d1);
            d1.clearColorFilter();
        }
	}
	
	public void establecerSegundoNivel(View view)
	{
		Button buttonCanal = (Button) findViewById(R.id.buttonCanal);
		Button buttonGenero = (Button) findViewById(R.id.buttonGenero);
		Button buttonPromotor = (Button) findViewById(R.id.buttonPromotor);
		Button buttonEdad = (Button) findViewById(R.id.buttonEdad);
		Button buttonTipoEvento = (Button) findViewById(R.id.buttonTipoEvento);
		Button buttonDistrito = (Button) findViewById(R.id.buttonDistrito);
		
		Button buttonProvincia = (Button) findViewById(R.id.buttonProvincia);
		buttonProvincia.setEnabled(true);
		//flagProvincia=0;
		
		if (buttonCanal.isPressed())if (flagNivel == 4) flagNivel=0; else flagNivel=4;
		else if (buttonGenero.isPressed()) if (flagNivel == 5) flagNivel=0; else flagNivel=5;
		else if (buttonPromotor.isPressed()) if (flagNivel == 1) flagNivel=0; else flagNivel=1;
		else if (buttonTipoEvento.isPressed()) if (flagNivel == 2) flagNivel=0; else flagNivel=2;
		else if (buttonEdad.isPressed()) if (flagNivel == 3) flagNivel=0; else flagNivel=3;
		else if (buttonDistrito.isPressed()) {
			if (flagNivel == 6) flagNivel=0; 
			else {
				buttonProvincia.setEnabled(false);
				flagProvincia=0;
				flagNivel=6;
			}
		}
		
		setColorNivel();
		setColorUbicacion();
	}
	
	/*** FECHAS ***/
	@Override
	protected Dialog onCreateDialog(int id)
	{
		switch (id)
		{
		   case DATE_DIALOG_Inicial:
			   DatePickerDialog dialogoInicio =new DatePickerDialog(this, mDateSetListenerInicio, anhoInicio, mesInicio, diaInicio);
			   dialogoInicio.getDatePicker();
			   return dialogoInicio;
		    
		   case DATE_DIALOG_Final:
			    DatePickerDialog dialogoFin =new DatePickerDialog(this, mDateSetListenerFin, anhoFin, mesFin, diaFin);
			    dialogoFin.getDatePicker();
			    return dialogoFin;
		}
		
		return null;
	}
	
	/*** FECHA INICIO ***/
	private DatePickerDialog.OnDateSetListener mDateSetListenerInicio = new DatePickerDialog.OnDateSetListener()
		{
			@Override
			public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
			{
				anhoInicio = year;
				mesInicio = monthOfYear;
				diaInicio = dayOfMonth;
				fechaInicio = (TextView) findViewById(R.id.fechaInicio);
				int mesInicioText = mesInicio+1;
				fechaInicio.setText("Fecha Inicio: " + diaInicio + "/"+ mesInicioText + "/"+ anhoInicio);
			}
		};
	
	/*** FECHA FIN ***/
	private DatePickerDialog.OnDateSetListener mDateSetListenerFin = new DatePickerDialog.OnDateSetListener()
	{
		@Override
		public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
		{
			anhoFin = year;
			mesFin = monthOfYear;
			diaFin = dayOfMonth;
			fechaFin = (TextView) findViewById(R.id.fechaFin);
			int mesFinText = mesFin+1;
			fechaFin.setText("Fecha Fin: " + diaFin + "/"+ mesFinText + "/"+ anhoFin);
		}
	};
	
	/*** DIALOGO ***/
	private void crearDialog()
	{
		tipoNivel = new AlertDialog.Builder(this);
		tipoNivel.setTitle("Ventas por Tipos de Eventos");
		tipoNivel.setMessage("Seleccione el tipo de informacion que se desea mostrar en la siguiente gráfica");//tipoNivel.setCancelable(true);

		tipoNivel.setPositiveButton("Por Sub Tipo de Evento", new DialogInterface.OnClickListener()
		{ 
			@Override
			public void onClick(DialogInterface dialog, int id) 
			{ 
				
				Venta_TipoEvento.this.inicializaFlags(TIPOEVENTO_N3);
				intTipoEventoN3.putExtra("tipoNivel3", 1);
				intTipoEventoN3.putExtra("tipoEvento",nomTipoEvento);
				intTipoEventoN3.putExtra("periodo",periodo);
				intTipoEventoN3.putExtra("idtipoevento",idtipoevento);
				
				intTipoEventoN3.putExtra("nombreUser", nombreUser);
				intTipoEventoN3.putExtra("idperfil", idperfil);
				intTipoEventoN3.putExtra("idUsuario", idUsuario);
				
				startActivity(intTipoEventoN3);
				
			}
		});
		
		tipoNivel.setNeutralButton("Por Canal", new DialogInterface.OnClickListener()
		{ 
			@Override
			public void onClick(DialogInterface dialog, int id) 
			{
				Venta_TipoEvento.this.inicializaFlags(TIPOEVENTO_N3);
				intTipoEventoN3.putExtra("tipoNivel3", 2);
				intTipoEventoN3.putExtra("tipoEvento",nomTipoEvento);
				intTipoEventoN3.putExtra("periodo",periodo);
				intTipoEventoN3.putExtra("idtipoevento",idtipoevento);

				intTipoEventoN3.putExtra("nombreUser", nombreUser);
				intTipoEventoN3.putExtra("idperfil", idperfil);
				intTipoEventoN3.putExtra("idUsuario", idUsuario);
				startActivity(intTipoEventoN3);
			}
		});
		
		tipoNivel.setNegativeButton("Por Rango de Edades", new DialogInterface.OnClickListener()
		{ 
			@Override
			public void onClick(DialogInterface dialog, int id) 
			{ 
				Venta_TipoEvento.this.inicializaFlags(TIPOEVENTO_N3);
				intTipoEventoN3.putExtra("tipoNivel3", 3);
				intTipoEventoN3.putExtra("tipoEvento",nomTipoEvento);
				intTipoEventoN3.putExtra("periodo",periodo);
				intTipoEventoN3.putExtra("idtipoevento",idtipoevento);
				
				intTipoEventoN3.putExtra("nombreUser", nombreUser);
				intTipoEventoN3.putExtra("idperfil", idperfil);
				intTipoEventoN3.putExtra("idUsuario", idUsuario);
				startActivity(intTipoEventoN3);
			}
		});
		
		

		tipoNivel.create();
	}
	
	private void incializaFecha()
	{
		pickDateInicio = (Button) findViewById(R.id.ButtonInicio);
		pickDateInicio.setOnClickListener(new View.OnClickListener() {
		            public void onClick(View v) {
		                showDialog(DATE_DIALOG_Inicial);
		            }
		        });
		
		fechaInicio = (TextView) findViewById(R.id.fechaInicio);
		fechaInicio.setText("Fecha Inicio: " + diaInicio + "/"+ (mesInicio +1) + "/"+ anhoInicio);

		pickDateFin = (Button) findViewById(R.id.ButtonFin);
 
		pickDateFin.setOnClickListener(new View.OnClickListener() {
		            public void onClick(View v) {
		                showDialog(DATE_DIALOG_Final);
		            }
		        });
		
		fechaFin = (TextView) findViewById(R.id.fechaFin);
		fechaFin.setText("Fecha Fin: " + diaFin + "/"+ (mesFin +1) + "/"+ anhoFin);
	}
	
	/*** INCIALIZA FECHA ***/
	private void inicializaFechaTipoEvento()
	{
		pickDateInicio = (Button) findViewById(R.id.ButtonInicio);

		pickDateInicio.setOnClickListener(new View.OnClickListener() {
		            @Override
					public void onClick(View v) {
		                showDialog(DATE_DIALOG_Inicial);
		            }
		        });
		        
		final Calendar c = Calendar.getInstance();
		anhoInicio = c.get(Calendar.YEAR);
		mesInicio = c.get(Calendar.MONTH);
		diaInicio = c.get(Calendar.DAY_OF_MONTH);
		int mesInicioText = mesInicio+1;
		fechaInicio = (TextView) findViewById(R.id.fechaInicio);
		fechaInicio.setText("Fecha Inicio: " + diaInicio + "/"+ mesInicioText + "/"+ anhoInicio);
		
		
		pickDateFin = (Button) findViewById(R.id.ButtonFin);

		pickDateFin.setOnClickListener(new View.OnClickListener() {
		            @Override
					public void onClick(View v) {
		                showDialog(DATE_DIALOG_Final);
		            }
		        });
		        
		anhoFin = c.get(Calendar.YEAR);
		mesFin = c.get(Calendar.MONTH);
		diaFin = c.get(Calendar.DAY_OF_MONTH);
		int mesFinText = mesFin+1;
		fechaFin = (TextView) findViewById(R.id.fechaFin);
		fechaFin.setText("Fecha Fin: " + diaFin + "/"+ mesFinText + "/"+ anhoFin);
	}
	
	/*** INICIALIZA FLAG DEL INTENT ***/
	private void inicializaFlagTipoEvento ()
	{
		flagGenerarReporte = this.getIntent().getExtras().getInt("flagGenerarReporte");
		flagLima= this.getIntent().getExtras().getInt("flagLima");
		flagProvincia= this.getIntent().getExtras().getInt("flagProvincia");
		flagNivel= this.getIntent().getExtras().getInt("flagNivel");
		flagTiempo= this.getIntent().getExtras().getInt("flagTiempo");
		
		anhoInicio= this.getIntent().getExtras().getInt("anhoInicio");
		mesInicio= this.getIntent().getExtras().getInt("mesInicio");
		diaInicio= this.getIntent().getExtras().getInt("diaInicio");
		
		diaFin= this.getIntent().getExtras().getInt("diaFin");
		mesFin= this.getIntent().getExtras().getInt("mesFin");
		anhoFin= this.getIntent().getExtras().getInt("anhoFin");
	}
	
	/*** FLAGS ***/
	private void inicializaFlags(int intent)
	{
		Intent intVenta = null;
		switch(intent)
		{
			case TIPOEVENTO_N3:
				intTipoEventoN3 = new Intent(Venta_TipoEvento.this,Venta_TipoEvento_Nivel3.class); //Se usa para inicializar para toda la clase
				intVenta = intTipoEventoN3;
				break;
			
			case TIPOEVENTO_N2:
				Intent intTipoEvento = this.getIntent(); //Solo para actualizar esta misma clase
				intVenta = intTipoEvento;
				break;
				
			case VENTAS_GENERALES:
				intVentasGenerales = new Intent(Venta_TipoEvento.this,VentasGenerales.class);
				intVenta = intVentasGenerales;
				break;
				
			case PROMOTOR:
				intPromotor = new Intent(Venta_TipoEvento.this,Venta_Promotor.class);
				intVenta = intPromotor;
				break;
				
			case EDAD:
				intEdad = new Intent(Venta_TipoEvento.this, Venta_Edad.class);
				intVenta = intEdad;
				break;
				
			case CANAL:
				intCanal = new Intent(Venta_TipoEvento.this, Venta_Canal.class);
				intVenta = intCanal;
				break;
			
			case GENERO:
				intGenero = new Intent(Venta_TipoEvento.this, Venta_Genero.class);
				intVenta = intGenero;
				break;
				
			case DISTRITO:
				intDistrito = new Intent(Venta_TipoEvento.this, Venta_Distrito.class);
				intVenta = intDistrito;
				break;
		}
		
		intVenta.putExtra("flagLima", flagLima);
		intVenta.putExtra("flagProvincia", flagProvincia);
		intVenta.putExtra("flagNivel", flagNivel);
		intVenta.putExtra("flagTiempo", flagTiempo);
		intVenta.putExtra("anhoInicio", anhoInicio);
		intVenta.putExtra("mesInicio", mesInicio);
		intVenta.putExtra("diaInicio", diaInicio);
		intVenta.putExtra("anhoFin", anhoFin);
		intVenta.putExtra("mesFin", mesFin);
		intVenta.putExtra("diaFin", diaFin);
		
		intVenta.putExtra("nombreUser", nombreUser);
		intVenta.putExtra("idperfil", idperfil);
		intVenta.putExtra("idUsuario", idUsuario);
	}
	
	/*** ACTION BAR ***/	
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.menuprincipal, menu);
		return true;
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
	    // Handle item selection
	    switch (item.getItemId()) {
	        case R.id.logout:
	        	Intent logo = new Intent(this,login.class);
	        	startActivity(logo);
	            return true;
	        case R.id.menuPrincipal:
	        	Intent menu = new Intent(this,com.Generales.Menu.class);
	        		        	
	        	menu.putExtra("codigo","");
	        	menu.putExtra("nombreUser",nombreUser);
	        	menu.putExtra("idPromotor",idUsuario);
	        	menu.putExtra("idperfil", idperfil);
	        	startActivity(menu);
	            return true;
	        case android.R.id.home:
	        	muestraPanel();
	            return true;
	        default:
	            return super.onOptionsItemSelected(item);
	    }
	}	
	
	
	private void acomodarPantalla()
	{
		LinearLayout layoutVista = (LinearLayout) findViewById(R.id.idpanelgraficovista);
		LinearLayout layoutVistaTxt = (LinearLayout) findViewById(R.id.idpanelgraficovistatxt);

		Button buttonMensuales = (Button) findViewById(R.id.buttonMensuales);
		Button buttonAnuales = (Button) findViewById(R.id.buttonAnuales);
		Button buttonTrimestrales = (Button) findViewById(R.id.buttonTrimestrales);
		Button buttonLima = (Button) findViewById(R.id.buttonLima);
		Button buttonProvincia = (Button) findViewById(R.id.buttonProvincia);
		Button ButtonInicio = (Button) findViewById(R.id.ButtonInicio);
		Button ButtonFin = (Button) findViewById(R.id.ButtonFin);
		Button button2 = (Button) findViewById(R.id.button2);

		layoutVistaTxt.setVisibility(View.GONE);
		layoutVista.setVisibility(View.GONE);
		
		buttonMensuales.setEnabled(false);
		buttonAnuales.setEnabled(false);
		buttonTrimestrales.setEnabled(false);
		buttonLima.setEnabled(false);
		buttonProvincia.setEnabled(false);
		ButtonInicio.setEnabled(false);
		ButtonFin.setEnabled(false);
		button2.setEnabled(false);
	}
	
/***METODOS DEL JSON****/
	
	private JSONArray returnJnConsultas(String url) {
		
		JSONArray array = null;
		try {
			array = (new JSONParser_Final().execute(url)).get(); //SE OBTIENE LOS OBJ DEL JSON
		} catch (Exception e) {
			Toast.makeText(this, "Problemas con la conexion", Toast.LENGTH_LONG).show();
		}
		return array;
	}
	
	private void ocultaPanel()
	{
		LinearLayout ll7 = (LinearLayout)findViewById(R.id.lytOpciones);
		ll7.setVisibility(View.GONE);
	}
	
	private void GenerarAnho(String ubicacion, VentasN2v2 ventasTipoEvento) {

		int flagReporte = 3;
		String url = urlVentasAnuales;
		if (ubicacion.equals(""))
			url += "Ambos/";
		else
			url += "/";
		url += anhoInicio + "/" + anhoFin;
		if (ubicacion.equals(""))
			url +=  ".json";
		else
			url += "/" + ubicacion + ".json";
		auxJson = returnJnConsultas(url);
		
		if (auxJson != null)
		{
			if (auxJson.length() != 0)
			{
					leerJsonA();
					
					/*
					this.arJSON = new ArrayList<Venta>();
					
					for (int i = 0; i < auxJson.length(); i++)
					{
						JSONObject jsonItem = auxJson.getJSONObject(i);
				        JSONObject jsonItem1 = jsonItem.getJSONObject("fact_venta");
				        
				        Venta v = new Venta();
				        v.setAnho(jsonItem1.getInt("Anho"));
				        v.setMonto(jsonItem1.getDouble("Monto"));
				        v.setNomTipoEvento(jsonItem1.getString("nomTipoEvento"));
				        
				        arJSON.add(v);
				        
				        auxtitulos.add(jsonItem1.getString("nomTipoEvento"));
				        
					}
					
					GenerarTitulos(auxtitulos);
					
					GenerarEntradaGrafica();
					*/
					leerJsonA();
				
					if (anhoFin == anhoInicio)
						this.tituloGrafica = "Ventas Totales por Tipo de Evento " + anhoFin;
					else
						this.tituloGrafica = "Ventas Totales por Tipo de Evento " + anhoInicio + "-" + anhoFin;
				
					ventasTipoEvento.setTituloChart(tituloGrafica);
					ventasTipoEvento.ejecutar(ventas, titulos, flagReporte, titulosX);
					ocultaPanel();
					
					this.layoutGrafica = (LinearLayout)findViewById(R.id.idpanelgraficoventa);
					this.mChartView = ChartFactory.getBarChartView(this,ventasTipoEvento.getDataset(), 
							ventasTipoEvento.getmRenderer(),Type.DEFAULT);
					layoutGrafica.removeAllViews();
				    layoutGrafica.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT,
					               LayoutParams.FILL_PARENT));
					
					Toast.makeText(this, "Se genera el reporte por tipo de Evento", Toast.LENGTH_SHORT).show();
					Toast.makeText(this, "Para obtener mayor informacion presionar una barra", Toast.LENGTH_LONG).show();
					
					/*** PINTADO DE BOTONES LUEGO DE GENERAR LA GRAFICA ***/
					this.inicializaFlags(TIPOEVENTO_N2);
					this.setColorNivel();
					this.setColorTiempo();
					this.setColorUbicacion();
					
					/*** PARAMETROS PARA EL TERCER NIVEL ***/
	
					this.mChartView.setOnClickListener(new View.OnClickListener()
					{
						@Override
						public void onClick(View arg0)
						{
							SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();
							if (seriesSelection != null) //Solo nos interesa cuando se selecciona una linea
							{
								int a = seriesSelection.getSeriesIndex();
								nomTipoEvento = titulos[a];
								idtipoevento = getIdbyName(nomTipoEvento);
								int x = (int) seriesSelection.getXValue();
								periodo = titulosX.get(x-1);
								Venta_TipoEvento.this.crearDialog(); //Creamos el dialgo en caso se use
								tipoNivel.show();//Nos sirve para obtener que tipo de nivel queremo
							}
						}
					});
				
			}
			else Toast.makeText(this, "No hay datos para mostrar", Toast.LENGTH_LONG).show();
		}else Toast.makeText(this, "Problemas con la conexion", Toast.LENGTH_LONG).show();
	}

	private void GenerarMes(String ubicacion, VentasN2v2 ventasTipoEvento) {
		
		int flagTipoReporte = 1; //MES
		String url = urlVentasMensuales;
		if (ubicacion.equals(""))
			url  = url + "Ambos/";
		else
			url = url + "/";
		url = url + anhoInicio + "-" + (mesInicio +1) + "-" + diaInicio + "/";
		url = url + anhoFin + "-" + (mesFin + 1) + "-" + diaFin;
		if (ubicacion.equals(""))
			url = url + ".json";
		else
			url = url +"/" + ubicacion + ".json";
		auxJson = returnJnConsultas(url);
		
		if (auxJson != null)
		{
			if (auxJson.length() != 0)
			{
				leerJsonM();
				/*	
				this.arJSON = new ArrayList<Venta>();
					
					for (int i = 0; i < auxJson.length(); i++)
					{
						JSONObject jsonItem = auxJson.getJSONObject(i);
				        JSONObject jsonItem1 = jsonItem.getJSONObject("fact_venta");
				        
				        Venta v = new Venta();
				        v.setAnho(jsonItem1.getInt("Anho"));
				        v.setMes(jsonItem1.getInt("Mes"));
				        v.setMonto(jsonItem1.getDouble("Monto"));
				        v.setNomTipoEvento(jsonItem1.getString("nomTipoEvento"));
				        
				        arJSON.add(v);
				        
				        auxtitulos.add(jsonItem1.getString("nomTipoEvento"));
				        
					}
					
					GenerarTitulos(auxtitulos);
					
					GenerarEntradaGrafica();
					*/
					if (anhoFin == anhoInicio && mesInicio == mesFin)
						this.tituloGrafica = "Ventas Totales por Tipo de Evento del " + (mesInicio + 1) + "-" + anhoInicio;
					else
						this.tituloGrafica = "Ventas Totales por Tipo de Evento del " + (mesInicio + 1) + "/" + anhoInicio + " - " + (mesFin + 1) + "/" + anhoFin;
				
				ventasTipoEvento.setTituloChart(tituloGrafica);
				ventasTipoEvento.ejecutar(ventas, titulos,flagTipoReporte, titulosX);
				ocultaPanel();
				
				this.layoutGrafica = (LinearLayout)findViewById(R.id.idpanelgraficoventa);
				this.mChartView = ChartFactory.getBarChartView(this,ventasTipoEvento.getDataset(), 
						ventasTipoEvento.getmRenderer(),Type.DEFAULT);
				layoutGrafica.removeAllViews();
			    layoutGrafica.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT,
				               LayoutParams.FILL_PARENT));
				
				Toast.makeText(this, "Se genera el reporte por tipo de Evento", Toast.LENGTH_SHORT).show();
				Toast.makeText(this, "Para obtener mayor informacion presionar una barra", Toast.LENGTH_LONG).show();
				
				/*** PINTADO DE BOTONES LUEGO DE GENERAR LA GRAFICA ***/
				this.inicializaFlags(TIPOEVENTO_N2);
				this.setColorNivel();
				this.setColorTiempo();
				this.setColorUbicacion();
				
				/*** PARAMETROS PARA EL TERCER NIVEL ***/
				//this.inicializaFlags(TIPOEVENTO_N3); //Se inicializa los flags para el nivel 3 de promotores en caso sea usado
				//this.crearDialog(); //Creamos el dialgo en caso se use
				this.mChartView.setOnClickListener(new View.OnClickListener()
				{
					@Override
					public void onClick(View arg0)
					{
						SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();
						if (seriesSelection != null) //Solo nos interesa cuando se selecciona una linea
						{
							int a = seriesSelection.getSeriesIndex();
							nomTipoEvento = titulos[a];
							idtipoevento = getIdbyName(nomTipoEvento);
							int x = (int) seriesSelection.getXValue();
							periodo = titulosX.get(x-1);
							Venta_TipoEvento.this.crearDialog(); //Creamos el dialgo en caso se use
							tipoNivel.show();//Nos sirve para obtener que tipo de nivel queremo
						}
					}
				});
			}
			else Toast.makeText(this, "No hay datos para mostrar", Toast.LENGTH_LONG).show();
		}else Toast.makeText(this, "Problemas con la conexion", Toast.LENGTH_LONG).show();
	}

	private void GenerarTrimestre(String ubicacion, VentasN2v2 ventasTipoEvento) {
		// TODO Auto-generated method stub

		int flagReporte = 2;
		String url = urlVentasTrimestrales;
		if (ubicacion.equals(""))
			url += "Ambos/";
		else
			url += "/";
		url += anhoInicio + "-" + (mesInicio+1) + "-" + diaInicio + "/";
		url += anhoFin + "-" + (mesFin+1) + "-" + diaFin;
		if (ubicacion.equals(""))
			url +=  ".json";
		else
			url += "/" + ubicacion + ".json";
		auxJson = returnJnConsultas(url);
		
		if (auxJson != null)
		{
			if (auxJson.length() != 0)
			{
				leerJsonT();
					/*
					this.arJSON = new ArrayList<Venta>();
					
					for (int i = 0; i < auxJson.length(); i++)
					{
						JSONObject jsonItem = auxJson.getJSONObject(i);
				        JSONObject jsonItem1 = jsonItem.getJSONObject("fact_venta");
				        
				        Venta v = new Venta();
				        v.setAnho(jsonItem1.getInt("Anho"));
				        v.setTrimestre(jsonItem1.getInt("Trimestre"));
				        v.setMonto(jsonItem1.getDouble("Monto"));
				        v.setNomTipoEvento(jsonItem1.getString("nomTipoEvento"));
				        
				        arJSON.add(v);
				        
				        auxtitulos.add(jsonItem1.getString("nomTipoEvento"));
				        
					}
					
					GenerarTitulos(auxtitulos);
					
					GenerarEntradaGrafica();
					*/
				if (anhoFin == anhoInicio && mesInicio == mesFin)
					this.tituloGrafica = "Ventas Totales por Tipo de Evento del " + (mesInicio + 1) + "-" + anhoInicio;
				else
					this.tituloGrafica = "Ventas Totales por Tipo de Evento del " + (mesInicio + 1) + "/" + anhoInicio + " - " + (mesFin + 1) + "/" + anhoFin;
				
				ocultaPanel();
				ventasTipoEvento.setTituloChart(tituloGrafica);
				ventasTipoEvento.ejecutar(ventas, titulos,flagReporte, titulosX);
				this.layoutGrafica = (LinearLayout)findViewById(R.id.idpanelgraficoventa);
				this.mChartView = ChartFactory.getBarChartView(this,ventasTipoEvento.getDataset(), 
						ventasTipoEvento.getmRenderer(),Type.DEFAULT);
				layoutGrafica.removeAllViews();
			    layoutGrafica.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT,
				               LayoutParams.FILL_PARENT));
				
				Toast.makeText(this, "Se genera el reporte por tipo de Evento", Toast.LENGTH_SHORT).show();
				Toast.makeText(this, "Para obtener mayor informacion presionar una barra", Toast.LENGTH_LONG).show();
				
				/*** PINTADO DE BOTONES LUEGO DE GENERAR LA GRAFICA ***/
				this.inicializaFlags(TIPOEVENTO_N2);
				this.setColorNivel();
				this.setColorTiempo();
				this.setColorUbicacion();
				
				/*** PARAMETROS PARA EL TERCER NIVEL ***/
				//this.inicializaFlags(TIPOEVENTO_N3); //Se inicializa los flags para el nivel 3 de promotores en caso sea usado
				//this.crearDialog(); //Creamos el dialgo en caso se use
				this.mChartView.setOnClickListener(new View.OnClickListener()
				{
					@Override
					public void onClick(View arg0)
					{
						SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();
						if (seriesSelection != null) //Solo nos interesa cuando se selecciona una linea
						{
							int a = seriesSelection.getSeriesIndex();
							nomTipoEvento = titulos[a];
							idtipoevento = getIdbyName(nomTipoEvento);
							int x = (int) seriesSelection.getXValue();
							periodo = titulosX.get(x-1);
							Venta_TipoEvento.this.crearDialog(); //Creamos el dialgo en caso se use
							tipoNivel.show();//Nos sirve para obtener que tipo de nivel queremo
						}
					}
				});
			}
			else Toast.makeText(this, "No hay datos para mostrar", Toast.LENGTH_LONG).show();
		}else Toast.makeText(this, "Problemas con la conexion", Toast.LENGTH_LONG).show();
	}
	
	
	private int getIdbyName(String nomtipoevento)
	{
		Venta auxVenta = null;
		int id = 0;
		for (int i=0;i<regVenta.size();i++)
		{
			auxVenta = regVenta.get(i);
			if(auxVenta.getNomTipoEvento().equals(nomtipoevento))
			{
				id = auxVenta.getIdTipoEvento();
				break;
			}
		}
		return id;
	}
	
	private void leerJsonA() 
	{		
		regVenta = new ArrayList<Venta>();

		try
		{
			for (int i = 0; i < auxJson.length(); i++)
			{
				JSONObject jsonItem = auxJson.getJSONObject(i);
		        JSONObject jsonItem1 = jsonItem.getJSONObject("fact_venta");
		        
		        Venta v = new Venta();
		        v.setAnho(jsonItem1.getInt("Anho"));
		        v.setMonto(jsonItem1.getDouble("Monto"));
		        v.setIdTipoEvento(jsonItem1.getInt("idTipoEvento"));
		        v.setNomTipoEvento(jsonItem1.getString("nomTipoEvento"));
		        
		        regVenta.add(v);
			}
			
			setTipoEvento();
			setTitulosXA();
			setMonto();

		}catch (JSONException e) { e.printStackTrace();}
	}
	
	private void leerJsonM() 
	{		
		regVenta = new ArrayList<Venta>();

		try
		{
			for (int i = 0; i < auxJson.length(); i++)
			{
				JSONObject jsonItem = auxJson.getJSONObject(i);
		        JSONObject jsonItem1 = jsonItem.getJSONObject("fact_venta");
		        
		        Venta v = new Venta();
		        v.setAnho(jsonItem1.getInt("Anho"));
		        v.setMes(jsonItem1.getInt("Mes"));
		        v.setMonto(jsonItem1.getDouble("Monto"));
		        v.setNomTipoEvento(jsonItem1.getString("nomTipoEvento"));
		        v.setNomMes(jsonItem1.getString("nomMes"));
		        v.setIdTipoEvento(jsonItem1.getInt("idTipoEvento"));
		        
		        regVenta.add(v);
			}
			
			setTipoEvento();
			setTitulosXM();
			setMonto();

		}catch (JSONException e) { e.printStackTrace();}
	}
	
	private void leerJsonT() 
	{		
		regVenta = new ArrayList<Venta>();

		try
		{
			for (int i = 0; i < auxJson.length(); i++)
			{
				JSONObject jsonItem = auxJson.getJSONObject(i);
		        JSONObject jsonItem1 = jsonItem.getJSONObject("fact_venta");
		        
		        Venta v = new Venta();
		        v.setAnho(jsonItem1.getInt("Anho"));
		        v.setTrimestre(jsonItem1.getInt("Trimestre"));
		        v.setMonto(jsonItem1.getDouble("Monto"));
		        v.setNomTipoEvento(jsonItem1.getString("nomTipoEvento"));
		        v.setIdTipoEvento(jsonItem1.getInt("idTipoEvento"));
		        
		        regVenta.add(v);
			}
			
			setTipoEvento();
			setTitulosXT();
			setMonto();

		}catch (JSONException e) { e.printStackTrace();}
	}

	private void setTipoEvento() 
	{
		
		List<String> auxTipoEvento = new ArrayList<String>();
		Venta auxVenta = regVenta.get(0);
		
		String nomTipoEvento = auxVenta.getNomTipoEvento();
		auxTipoEvento.add(nomTipoEvento);
		for(int i=1;i<regVenta.size();i++)
		{
			auxVenta = regVenta.get(i);
			String t = auxVenta.getNomTipoEvento();
			
			if(!t.equals(nomTipoEvento))
			{
				nomTipoEvento = t;
				auxTipoEvento.add(nomTipoEvento);
			}
		}
		
		this.titulos = new String[auxTipoEvento.size()];
		for(int i=0;i<auxTipoEvento.size();i++)
			this.titulos[i] = auxTipoEvento.get(i);
			
		
	}
	
	private void setTitulosXA()
	{
		this.titulosX = new ArrayList<String>();
		
		Venta auxVenta = regVenta.get(0);
		String nomTipoEvento = auxVenta.getNomTipoEvento();
		titulosX.add(auxVenta.getAnho()+"");
		
		for(int i=1;i<regVenta.size();i++)
		{
			auxVenta = regVenta.get(i);
			String p = auxVenta.getNomTipoEvento();
			
			if(p.equals(nomTipoEvento))
				titulosX.add(auxVenta.getAnho()+"");
			else
				break;
		}
	}
	
	private void setTitulosXM()
	{
		this.titulosX = new ArrayList<String>();
		
		Venta auxVenta = regVenta.get(0);
		String nomTipoevento = auxVenta.getNomTipoEvento();
		titulosX.add(auxVenta.getNomMes());
		
		for(int i=1;i<regVenta.size();i++)
		{
			auxVenta = regVenta.get(i);
			String p = auxVenta.getNomTipoEvento();
			
			if(p.equals(nomTipoevento))
				titulosX.add(auxVenta.getNomMes());
			else
				break;
		}
	}
	
	private void setTitulosXT()
	{
		this.titulosX = new ArrayList<String>();
		
		Venta auxVenta = regVenta.get(0);
		String nomTipoevento = auxVenta.getNomTipoEvento();
		titulosX.add(auxVenta.getTrimestre() + "/" + auxVenta.getAnho());
		
		for(int i=1;i<regVenta.size();i++)
		{
			auxVenta = regVenta.get(i);
			String p = auxVenta.getNomTipoEvento();
			
			if(p.equals(nomTipoevento))
				titulosX.add(auxVenta.getTrimestre() + "/" + auxVenta.getAnho());
			else
				break;
		}
	}
	
	private void setMonto() 
	{
		double[] auxMonto = null;
		ventas = new ArrayList<double[]>();
		
		for(int i=0;i<titulos.length;i++)
		{
			auxMonto = dameVentasP(titulos[i]);
			ventas.add(auxMonto);
		}
	}

	private double[] dameVentasP(String nomTipoEvento)
	{

		double[] auxMonto = null;
		if (titulosX.size() == 1)
		{
			auxMonto = new double[this.titulosX.size()+1];
			Venta auxVenta = null;
			int cont = 0;
			
			for(int i=0;i<regVenta.size();i++)
			{
				auxVenta = regVenta.get(i);
				String p = auxVenta.getNomTipoEvento();
				
				if(p.equals(nomTipoEvento))
				{
					auxMonto[cont] = auxVenta.getMonto();
					cont++;
					if (cont == titulosX.size())
					{
						auxMonto[cont] = 0;
						break;
					}
						
				}
					
			}
		}
		else
		{
			auxMonto = new double[this.titulosX.size()];
			Venta auxVenta = null;
			int cont = 0;
			
			for(int i=0;i<regVenta.size();i++)
			{
				auxVenta = regVenta.get(i);
				String p = auxVenta.getNomTipoEvento();
				
				if(p.equals(nomTipoEvento))
				{
					auxMonto[cont] = auxVenta.getMonto();
					cont++;
					if (cont == titulosX.size())
						break;
				}
					
			}
		}
		
		return auxMonto;
		
		
	}
	
	private void GenerarTitulos(ArrayList<String> aux) {

		ArrayList<String> auxiliar = new ArrayList<String>();
		int posicion = 0;
		auxiliar.add(aux.get(posicion));
		boolean hay = false;
		for (int i=0; i< aux.size(); i++){
	
			for (int j=0; j< auxiliar.size(); j++){
				
				if (auxiliar.get(j).compareTo(aux.get(i))==0) {
					hay = true;
					posicion=j;
					break;
				}
			}
			if (hay == false)  auxiliar.add(aux.get(i));
			hay = false;

		}
		
		titulos = new String[auxiliar.size()]; 
		
		for (int i=0; i< auxiliar.size(); i++){
			
			titulos[i] = auxiliar.get(i);

		}
		
	}
	
	private void GenerarEntradaGrafica() {
		
		/*double[] p1 = {1000, 1200, 1000};
		double [] p2 = {400, 600, 800};
		double [] p3 = {200, 400, 700};
		double [] p4 = {100, 300, 200};

		List<double[]> eventos = new ArrayList<double[]>();
		eventos.add(p1);
		eventos.add(p2);
		eventos.add(p3);
		eventos.add(p4);
		
		String[] titulos = {"TipoEvento 1", "TipoEvento 2", "TipoEvento 3", "TipoEvento 4"};*/
		
		//BD_SQLite db = new BD_SQLite(this);
		
		//listaTipoEvento = db.getTipoEvento(query);
		arX = this.GenerarEjeX();
		double[] auxArreglo = new double[arX.size()];
		//listaNombreTipoEvento = db.listaTipoEvento();
		
		//db.close();
		
		for (int i=0; i< titulos.length; i++){
			
			auxArreglo = Venta_TipoEvento.this.GenerarArreglo(titulos[i]);
			tipoEventos.add(auxArreglo);
		   
		}
		
	}
	
	public double[] GenerarArreglo(String stringTipoEvento){

		
		double[] aux = new double[arX.size()];
		//BD_SQLite db = new BD_SQLite(this);
		boolean hay = false;
		int posicion =0;
		if (flagTiempo ==1) {
			//arSQL = db.generaDataMesTipoEvento(stringTipoEvento,flagLima,flagProvincia,numMesInicial,numMesFinal, numAnhoInicial , numAnhoFinal);
			for (int i=0; i< arX.size(); i++){
				for (int j=0; j< arJSON.size(); j++){
					if ((arJSON.get(j).getAnho()==arX.get(i).getAnho())  && (arJSON.get(j).getMes()==arX.get(i).getMes()) && (arJSON.get(j).getNomTipoEvento().compareTo(stringTipoEvento)==0)) {
						hay = true;
						posicion = j;
						break;
					}
				}
				if (hay == true) aux[i]=arJSON.get(posicion).getMonto();
				else aux[i]=0;
				hay=false;
			}
		}
		if (flagTiempo ==2) {
			//arSQL = db.generaDataTrimestreTipoEvento(stringTipoEvento,flagLima,flagProvincia,numMesInicial,numMesFinal, numAnhoInicial , numAnhoFinal);
			for (int i=0; i< arX.size(); i++){
				for (int j=0; j< arJSON.size(); j++){
					if ((arJSON.get(j).getAnho()==arX.get(i).getAnho()) && (arJSON.get(j).getNomTipoEvento().compareTo(stringTipoEvento)==0)) {
						hay = true;
						posicion = j;
						break;
					}
				}
				if (hay == true) aux[i]=arJSON.get(posicion).getMonto();
				else aux[i]=0;
				hay=false;
			}
		}
		if (flagTiempo ==3) {
			//arSQL = db.generaDataAnhoTipoEvento(stringTipoEvento,flagLima,flagProvincia,numMesInicial,numMesFinal, numAnhoInicial , numAnhoFinal);
			for (int i=0; i< arX.size(); i++){
				for (int j=0; j< arJSON.size(); j++){
					if ((arJSON.get(j).getAnho()==arX.get(i).getAnho())  && (arJSON.get(j).getTrimestre()==arX.get(i).getTrimestre()) && (arJSON.get(j).getNomTipoEvento().compareTo(stringTipoEvento)==0) ) {
						hay = true;
						posicion = j;
						break;
					}
				}
				if (hay == true) aux[i]=arJSON.get(posicion).getMonto();
				else aux[i]=0;
				hay=false;
			}
		}
		
			
		//db.close();
		return aux;
	}

	public ArrayList<Venta> GenerarEjeX(){

		ArrayList<Venta> arr = new ArrayList<Venta>();
		int numMesInicial = mesInicio+1;
		int numMesFinal = mesFin+1;

		
		if (flagTiempo == 1){
			int cont = numMesInicial;
			for (int i=anhoInicio; i<= anhoFin; i++){
				while ((cont<=12)){
					if (cont > numMesFinal && i==anhoFin)  break;
					Venta v = new Venta();
					v.setAnho(i);
					v.setMes(cont);
					arr.add(v);
					cont++;
				}
				cont=1;		
			}	
		}
		
		if (flagTiempo == 2){
			int cont=0;
			int trimestre=0;
			
			if (numMesInicial>=1 && numMesInicial<=3) cont =1;
			if (numMesInicial>=4 && numMesInicial<=6) cont =2;
			if (numMesInicial>=7 && numMesInicial<=9) cont =3;
			if (numMesInicial>=8 && numMesInicial<=12) cont=4;
			
			if (numMesFinal>=1 && numMesFinal<=3) trimestre =1;
			if (numMesFinal>=4 && numMesFinal<=6) trimestre =2;
			if (numMesFinal>=7 && numMesFinal<=9) trimestre =3;
			if (numMesFinal>=8 && numMesFinal<=12) trimestre=4;
			
			for (int i=anhoInicio; i<= anhoFin; i++){
				while ((cont<=4)){
					if (cont > trimestre  && i==anhoFin)  break;
					Venta v = new Venta();
					v.setAnho(i);
					v.setTrimestre(cont);
					arr.add(v);
					cont++;
				}
				cont=1;		
			}	
		}
		
		if (flagTiempo == 3){
			for (int i=anhoInicio; i<= anhoFin; i++){
					Venta v = new Venta();
					v.setAnho(i);
					arr.add(v);
			}
			
		}
		return arr;
	}

	private void muestraPanel()
	{
		LinearLayout ll7 = (LinearLayout)findViewById(R.id.lytOpciones);
		
		if (ll7.getVisibility() == View.VISIBLE)
			ll7.setVisibility(View.GONE);
		else if(ll7.getVisibility() == View.GONE)
			ll7.setVisibility(View.VISIBLE);
	}
	
	
}